import '../app_configure.dart';
import 'device_data_base.dart';

class DeviceDataV60 extends DevcieDataBase {
  final List<int> datas = [0xA4, 0x40, 0x00, 0x00, 0x42, 0x4C, 0x4B, 0x5B]; //对码
  final List<int> cdats = [
    0x40,
    0x40,
    0x00,
    0x00,
    0x80,
    0x80,
    0x80,
    0x80,
    0x00,
    0xBF
  ]; //控制

  DeviceDataV60() {
    fillAppId();
  }

  @override
  void fillAppId() {
    datas[2] = AppConfig.instance.appId & 0xFF;
    datas[3] = (AppConfig.instance.appId >> 8) & 0xFF;

    cdats[2] = AppConfig.instance.appId & 0xFF;
    cdats[3] = (AppConfig.instance.appId >> 8) & 0xFF;
  }

  @override
  List<int> getPair() {
    cdats[4] = 0x80;
    cdats[5] = 0x80;
    cdats[6] = 0x80;
    cdats[7] = 0x80;
    return datas;
  }

  @override
  List<int> getStopPair() {
    cdats[4] = 0x80;
    cdats[5] = 0x80;
    cdats[6] = 0x80;
    cdats[7] = 0x80;
    return cdats;
  }

  @override
  List<int> getSpeed(int i) {
    cdats[4] = 0xFF & i;
    return cdats;
  }

  @override
  List<int> getDirection(int i) {
    cdats[3] = 0xFF & i;
    return cdats;
  }

  @override
  List<int> getDataAt(int index, int value) {
    if (index < 0 || index > (cdats.length - 1)) {
      return cdats;
    }
    cdats[index] = 0xFF & value;
    return cdats;
  }
}

/**
一、	参数
1.	RF 地址：0xC1, 0xC2, 0xC3, 0xC4, 0xC5,
2.	通讯频点：2426

二、	匹配
数据长度：8 bytes
帧头 + 协议号 + App_ID[2] + ‘B’ + ‘L’ + ‘K’ + 帧尾
帧头：0xA4			帧尾：0x5B
协议号格式：bit7 ~ bit4 表示大版本号，bit3 ~ bit0 表示小版本号
Eg: 0x40 表示 4V0 ;  0x41 表示 4V1
持续发送 3s

三、	数据格式
数据长度：10 bytes
帧头 + 协议号 + App_ID[2] + data[5] + 帧尾
帧头：0x40			帧尾：0xBF
协议号格式：bit7 ~ bit4 表示大版本号，bit3 ~ bit0 表示小版本号
Eg: 0x40 表示 4V0 ;  0x41 表示 4V1

四、	数据协议版本说明
1.	2V0表示 2 电机带调速
data [4]: 前后电机，0x80: 待机  
data [5]: 左右电机，0x80: 待机  

2.	3V0表示 3 电机带调速
data [4]: 前后电机，0x80: 待机
data [5]: 左右电机，0x80: 待机
data [6]: 炮台电机，0x80: 待机  

3.	4V0表示 4 电机带调速
data [4]: A 电机 0x80: 待机
data [5]: B 电机 0x80: 待机
data [6]: C 电机 0x80: 待机
data [7]: D 电机 0x80: 待机

五、	调速说明
1、< 0x80 正转：24 级调速，Eg：20 表示正转 20级调速
2、> 0x80 反转：24 级调速，Eg：0x80 + 20 表示反转 20级调速


 */